Deepomics, un système d'information pour les données omics
Le projet consistait en la maintenance évolutive et la sémantisation de l'API du système d'information Deepomics, une plateforme dédiée aux données Omics, ainsi qu'au développement de tests end-to-end (e2e). Plusieurs missions ont été effectuées en collaboration avec le laboratoire PROSE (PRocédés biOtechnologiques au Service de l'Environnement).
La première mission s'est déroulée entre septembre 2022 et décembre 2023, suivie d'une seconde mission en juillet 2024, ciblant spécifiquement le développement de tests e2e pour des scénarios d'utilisation complets. Actuellement, une maintenance évolutive est en cours.
Les enjeux étaient multiples : assurer la maintenance nécessaire au bon fonctionnement de la plateforme tout en travaillant sur la sémantisation, un aspect crucial pour garantir l'accessibilité et l'utilisation des ressources scientifiques publiques. Le développement était supervisé par la Direction du Service Informatique (DSI) de l'INRAE (Institut National de la Recherche en AgroEcologie), avec l'UMR (Unité Mixte de Recherche) PROSE responsable des aspects scientifiques et métiers. Une collaboration étroite a également été établie avec l'UMR MISTEA pour la mission de sémantisation.
Tâches & Objectifs
En tant que développeur fullstack et expert en sémantique, j'étais également responsable de l'ingénierie QA pour les scénarios e2e. Mon rôle consistait à développer et déboguer à la fois le frontend et le backend du dépôt de code, tout en travaillant sur la sémantisation du modèle pour permettre un export conforme aux normes du web sémantique. Un des objectifs principaux était de garantir la fluidité des parcours utilisateurs, notamment pour le dépôt et la récupération des données sur la plateforme.
Les critères de réussite comprenaient non seulement la correction des bugs et la maintenance de l'application, mais aussi la sémantisation complète de l'API en adéquation avec les technologies de la plateforme, notamment API Platform de Symfony. L'un des objectifs clés était de déconnecter le travail de sémantisation des développeurs, afin de permettre aux scientifiques de définir des relations via des ontologies. Enfin, il était essentiel de développer des tests e2e robustes.
Actions et Développement
Mon premier pas a été de me familiariser avec l'environnement Deepomics, comprenant un backend développé sous Symfony et un frontend en Angular. J'ai ensuite créé un dépôt spécifique pour héberger l'ontologie métier en vue de la sémantisation, et mis en place une pipeline permettant d'extraire le contenu de ce dépôt afin de générer automatiquement les annotations pour API Platform. Pour les tests e2e, j'ai utilisé Robot Framework avec la bibliothèque Selenium.
Les échanges réguliers avec l'équipe projet, scientifique et informatique, ainsi qu'avec l'ancienne équipe de développement, ont facilité mon travail. La collaboration avec l'UMR MISTEA a été cruciale pour l'élaboration d'une ontologie commune, établissant ainsi un vocabulaire partagé. Malgré la complexité du projet et une dette technique importante, l'implémentation de la sémantisation de l'API a représenté un défi de taille, mais aussi une opportunité d'apprentissage.
Les décisions clés ont été prises collectivement lors des réunions bihebdomadaires. Pour la sémantisation de l'API, j'ai présenté un Proof of Concept (POC) avant d'implémenter la solution complète.
Résultats
Les résultats obtenus sont multiples : correction de nombreux bugs, amélioration des retours utilisateurs et de l'ergonomie, évolution du modèle pour la gestion des fichiers fastq pairés (deux fichiers au lieu d'un), et sémantisation de l'API en utilisant le format JSON-LD, conforme à une ontologie scientifique. Une CI (intégration continue) complexe a été co-construite pour synchroniser l'ontologie avec l'API. Le repository de cet ETL (extraction, transformation et chargement) est disponible ici. De plus, les tests e2e implémentés avec Robot Framework couvrent l'ensemble des parcours utilisateurs clés.
J'ai appris à maîtriser en profondeur le framework Symfony et le langage PHP, à travailler en équipe avec une CI propre, ainsi qu'à utiliser Robot Framework avec Selenium. Enfin, le travail d'ETL personnalisé, transverse entre API Platform et les formats d'ontologies du web sémantique (RDF/OWL), a renforcé mes compétences techniques.
Stack technique
Le projet repose sur les outils et technologies suivants :
- Backend : PHP, Symfony
- Frontend : TypeScript, Angular
- Tests : Robot Framework, Selenium
- Infrastructure : Docker Compose
- Documentation : Markdown
- ETL personnalisé : Node.js pour l'ETL entre les fichiers d'ontologies et Symfony
Il est important de noter que cette stack technique est héritée : je n'ai pas participé aux choix initiaux. Les défis techniques majeurs rencontrés incluent :
- Complexité du système d'information Deepomics au niveau des règles métiers
- Nécessité de maîtriser le backend (PHP) et le frontend (TypeScript)
- Dette technique existante nécessitant refactoring et simplification du code
- Apprentissage de Robot Framework et Selenium pour la gestion des tests automatisés